Computer-based networks, in particular the Internet, have expanded the possibilities for operation of software. Rather than restricting the operation of such software to a single computer, a multi-tier architecture has become popular. Multi-tier architecture (often referred to as n-tier architecture) is a client-server architecture in which an application is executed by more than one distinct software agent. For example, an application that uses middleware to service data requests between a user and a database employs multi-tier architecture. The most widespread use of “multi-tier architecture” refers to three-tier architecture. Three-tier is a client-server architecture in which the user interface, functional process logic (“business rules”), computer data storage and data access are developed and maintained as independent modules, most often on separate platforms. The three-tier architecture is intended to allow any of the three tiers to be upgraded or replaced independently as requirements or technology change. For example, a change of functionality in the presentation tier may only affect the user interface code. Typically, the user interface runs on a desktop PC or workstation and uses a standard graphical user interface, such as an Internet Browser, functional process logic may consist of one or more separate modules running on a workstation or application server, and an RDBMS on a database server or mainframe contains the computer data storage logic. The 3-Tier architecture has the following three tiers:
Presentation Tier
This is the top most level of the application. The presentation tier displays information related to GUI (graphical user interface) services. For example, for an e-commerce application, this tier relates to such services as browsing merchandise, purchasing, and shopping cart contents. It communicates with other tiers by outputting results to the browser/client tier and all other tiers in the network.
Application Tier
The logic tier is separable from the presentation tier and, as its own layer, it controls an application's functionality by performing detailed processing.
Data Tier
This tier consists of services for providing data, as well as hardware such as Database Servers. Here information is stored and retrieved. This tier keeps data neutral and independent from application servers or business logic. Giving data its own tier also improves scalability and performance.
Multi-tier applications are usually divided into modules that are typically distributed between the tiers. Each tier might be implemented by several servers. The modules communicate with each other in order, for example, to exchange data or for synchronize activities. These complicated applications are hard to deploy, maintain and operate. The operators, who maintain the system, have to be assisted by specialized individuals who understand the application. Therefore, maintaining, upgrading, deploying and implementing such applications have become a cumbersome and time consuming process.
Currently there are no fully automated, centrally controlled solutions to this problem. Instead, currently available solutions rely upon manual execution of at least a part of the process, such that a complicated plan for managing such an application must be prepared and performed by highly skilled computer software programmers, significantly raising the cost and complexity of the deployment of new software. Currently there are no fully automated, centrally controlled solutions for controlling and monitoring the activation software.
The situation is further complicated by the recent move in many organizations to SaaS (Software as a Service) and Web Applications, in which a software application is delivered as a service through the Internet (typically through the Web). The deployment and management of SaaS and Web Applications operation is highly complex, dynamic and expensive. Furthermore, for such software deployments, the data center is an important part of the business organization, thereby increasing the requirement for manageable and faultless deployment.